import router from '@/router'
import axios from 'axios'
import { ElMessage } from 'element-plus'
export const BASE_URL = '/k3cloud' // 你的接口基础URL

//创建axios实例
const service = axios.create({
  baseURL: BASE_URL,
  timeout: 5000, //超时时间
  headers: {
    //编译语言
    'Content-type': 'application/json;charset=utf-8'
  }
})
//请求拦截
//就是你请求接口的时候，我会先拦截下来，对你的数据做一个判断，或者携带个token给你
service.interceptors.request.use(
  (config) => {
    //请求的数据
    config.headers = config.headers || {} // 没有数据的话就设置为空设置为数据
    if (localStorage.getItem('token')) {
      //先确保登录
      config.headers.token = localStorage.getItem('token') || ''
    }
    return config //必须返回出去，不然请求发不出去
  },
  (error) => {
    //处理错误请求
    return Promise.reject(error)
  }
)
//响应拦截：后端返回来的结果
service.interceptors.response.use(
  (res) => {
    const data = res.data
    if (
      data?.Result?.IsSuccess ||
      data?.Result?.ResponseStatus.IsSuccess ||
      data.length >= 0 ||
      data.IsSuccessByAPI
    ) {
      //请求成功
      return Promise.resolve(res.data)
    } else {
      ElMessage({
        message: '系统异常',
        type: 'error'
      })
      if (res.data.Result.ResponseStatus.Errors[0].Message === '会话信息已丢失，请重新登录') {
        sessionStorage.removeItem('token')
        router.push('login')
      }
      return Promise.reject(res)
    }
  },
  (err) => {
    console.log(err, '错误信息的处理') //错误信息的处理
    //处理错误响应
    return Promise.reject(err)
  }
)
//因为别的地方要用，所以就把实例暴露出去，导出
export default service
